package cn.gok.day4;

import java.io.*;
import java.math.BigDecimal;
import java.math.BigInteger;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.Scanner;

/**
 * @ClassName HomeWork
 * @Description TODO
 * @Author HP
 * @Date 19:42 2022/7/7
 * @Version 1.0
 *
 * //1 使用大数运算，就算
 * //
 * //        4444444.4444/3.333333的值，保留2位小数，四舍五入
 * //        2  输入你生日的前一周的周四是该年的第几天？
 * //        Calendar:set方法设置到你的生日，
 * //        add方法跳到前一周的周四，通过 xxxx获得是该年的第几天? get(Calendar.DAY_OF_YEAR)
 * //
 * //        3、递归输出src目录中的所有.java文件的绝对路径。
 * //
 * //        4、在电脑D盘下创建一个文件为HelloWorld.txt文件，判断他是文件还是目录，再创建一个目录IOTest，之后将HelloWorld.txt拷贝到IOTest目录的a.txt去。
 * //
 * //        5、从utf-8编码格式的文本复制到GBK编码的文本（不能出现乱码）
 **/
public class HomeWork {
    public static void main(String[] args) throws ParseException, IOException {
//         1 使用大数运算
//        bigNum();
//         2  输入你生日的前一周的周四是该年的第几天？
//        whereDay();
//         3、递归输出src目录中的所有.java文件的绝对路径。
//        File file=new File("D:\\Oscar\\Code\\Code1\\src");
//        forSrc(file);
//         4、在电脑D盘下创建一个文件为HelloWorld.txt文件，判断他是文件还是目录，再创建一个目录IOTest，之后将HelloWorld.txt拷贝到IOTest目录的a.txt去。
//        doClone();
//         5、从utf-8编码格式的文本复制到GBK编码的文本（不能出现乱码）
        utfToGbk();

    }
//    1 使用大数运算，就算:4444444.4444/3.333333的值，保留2位小数，四舍五入
    public static void bigNum(){
        BigDecimal n1=new BigDecimal("4444444.4444");
        BigDecimal n2=new BigDecimal("3.333333");
        System.out.println(n1.divide(n2,2,BigDecimal.ROUND_HALF_UP));
    }
//     2  输入你生日的前一周的周四是该年的第几天？
//        Calendar:set方法设置到你的生日，
//        add方法跳到前一周的周四，通过 xxxx获得是该年的第几天? get(Calendar.DAY_OF_YEAR)
    public static void whereDay() throws ParseException {
        Scanner scanner=new Scanner(System.in);
        System.out.print("请输入您的生日：（提示：yyyy-MM-dd）");
        SimpleDateFormat format=new SimpleDateFormat("yyyy-MM-dd");
        String time=scanner.next();
        Date date=format.parse(time);
        Calendar calendar=Calendar.getInstance();
        calendar.setTime(date);
//        获得今天是星期几
        int nowWeek=calendar.get(Calendar.DAY_OF_WEEK)-1;
//        上周四就是减今天是星期几+三天
        calendar.add(Calendar.DAY_OF_WEEK,-(nowWeek+3));
        System.out.println("您的生日是"+calendar.get(Calendar.YEAR)+"年的第"+calendar.get(Calendar.DAY_OF_YEAR)+"天");
    }
//         3、递归输出src目录中的所有.java文件的绝对路径。
    public static void forSrc(File file){
        File file1[]=file.listFiles();
        for(File f:file1){
            if(f.getName().endsWith(".java")){
                System.out.println(f.getName()+"的绝对路径是："+f.getAbsolutePath());
            }else if (f.isDirectory()){
                forSrc(f);
            }
        }
    }
//         4、在电脑D盘下创建一个文件为HelloWorld.txt文件，判断他是文件还是目录，再创建一个目录IOTest，之后将HelloWorld.txt拷贝到IOTest目录的a.txt去。
    public static void doClone() throws IOException {
//        判断是否有文件
        File file=new File("D:\\Oscar\\Code\\IOTest\\a.txt");
        File file2=new File("D:\\Oscar\\Code\\HelloWorld.txt");
        if(!file.exists()){
            try {
                file.createNewFile();
            }catch (IOException e){
                e.printStackTrace();
            }
        }
        if(!file2.exists()){
            try {
                file2.createNewFile();
            }catch (IOException e){
                e.printStackTrace();
            }
        }
        OutputStream os=new FileOutputStream(file);
        InputStream input=new FileInputStream(file2);
        byte b[]=new byte[3];
        int len=0;
        while ((len=input.read(b))!=-1){
            os.write(b,0,len);
        }
//        关闭资源
        os.close();
        input.close();
    }
//         5、从utf-8编码格式的文本复制到GBK编码的文本（不能出现乱码）
    public static void utfToGbk() throws IOException {
        InputStreamReader is=new InputStreamReader(new FileInputStream("D:\\Oscar\\Code\\HelloWorld.txt"),"utf-8");
        OutputStreamWriter os=new OutputStreamWriter(new FileOutputStream("D:\\Oscar\\Code\\test2.txt"),"GBK");
        char c[]=new char[10];
        int len=0;
        while ((len= is.read(c))!=-1){
            os.write(c,0,len);
        }
//        关闭资源
        os.close();
        is.close();
    }
}
